{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "498d7e55",
   "metadata": {},
   "source": [
    "# UpstageLayoutAnalysisLoader\n",
    "\n",
    "`UpstageLayoutAnalysisLoader` 는 Upstage AI에서 제공하는 문서 분석 도구로, LangChain 프레임워크와 통합되어 사용할 수 있는 문서 로더입니다.\n",
    "\n",
    "**주요 특징:**\n",
    "- PDF, 이미지 등 다양한 형식의 문서에서 레이아웃 분석 수행\n",
    "- 문서의 구조적 요소(제목, 단락, 표, 이미지 등)를 자동으로 인식 및 추출\n",
    "- OCR 기능 지원 (선택적)\n",
    "\n",
    "UpstageLayoutAnalysisLoader는 단순한 텍스트 추출을 넘어 문서의 구조를 이해하고 요소 간 관계를 파악하여 보다 정확한 문서 분석을 가능하게 합니다.\n",
    "\n",
    "**설치**\n",
    "\n",
    "`langchain-upstage` 패키지를 설치 후 사용합니다.\n",
    "\n",
    "```bash\n",
    "pip install -U langchain-upstage\n",
    "```"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "e9546f6f",
   "metadata": {},
   "source": [
    "**API Key 설정**\n",
    "\n",
    "- Upstage API KEY 발급 링크: https://console.upstage.ai/\n",
    "\n",
    "`.env` 파일에 `UPSTAGE_API_KEY` 키를 설정합니다.\n",
    "\n",
    "**참고** \n",
    "- [Upstage 개발자 문서](https://developers.upstage.ai/docs/getting-started/quick-start)를 참조하세요."
   ]
  },
  {
   "cell_type": "markdown",
   "id": "79b7b67e",
   "metadata": {},
   "source": [
    "## 환경 설정"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "69ca6180",
   "metadata": {},
   "outputs": [],
   "source": [
    "# API KEY를 환경변수로 관리하기 위한 설정 파일\n",
    "from dotenv import load_dotenv\n",
    "\n",
    "# API KEY 정보로드\n",
    "load_dotenv()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "2599bedd",
   "metadata": {},
   "outputs": [],
   "source": [
    "# LangSmith 추적을 설정합니다. https://smith.langchain.com\n",
    "# !pip install langchain-teddynote\n",
    "from langchain_teddynote import logging\n",
    "\n",
    "# 프로젝트 이름을 입력합니다.\n",
    "logging.langsmith(\"CH07-DocumentLoader\")"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "3cbc8666",
   "metadata": {},
   "source": [
    "## UpstageLayoutAnalysisLoader"
   ]
  },
  {
   "cell_type": "markdown",
   "id": "39a7d5bd",
   "metadata": {},
   "source": [
    "**주요 파라미터**\n",
    "- `file_path`: 분석할 문서 경로\n",
    "- `output_type`: 출력 형식 [(기본값)'html', 'text']\n",
    "- `split`: 문서 분할 방식 ['none', 'element', 'page']\n",
    "- `use_ocr=True`: OCR 사용\n",
    "- `exclude=[\"header\", \"footer\"]`: 헤더, 푸터 제외"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "3d71cdeb",
   "metadata": {},
   "outputs": [],
   "source": [
    "from langchain_upstage import UpstageLayoutAnalysisLoader\n",
    "\n",
    "# 파일 경로\n",
    "file_path = \"./data/SPRI_AI_Brief_2023년12월호_F.pdf\"\n",
    "\n",
    "# 문서 로더 설정\n",
    "loader = UpstageLayoutAnalysisLoader(\n",
    "    file_path,\n",
    "    output_type=\"html\",\n",
    "    split=\"element\",\n",
    "    use_ocr=True,\n",
    "    exclude=[\"header\", \"footer\"],\n",
    ")\n",
    "\n",
    "# 문서 로드\n",
    "docs = loader.load()\n",
    "\n",
    "# 결과 출력\n",
    "for doc in docs[:3]:\n",
    "    print(doc)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "4f883a1c",
   "metadata": {},
   "outputs": [],
   "source": [
    "docs[11]"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "langchain-kr-lwwSZlnu-py3.11",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.11.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}
